﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Services;
using RRTWSEntityDSD.Dao;
using RRTWSEntityDSD.Dominio;

namespace RRTWSDSD.ServiceEntidad
{
    /// <summary>
    /// Summary description for EventoServices
    /// </summary>
    [WebService(Namespace = "http://rtt.edu.upc.com.pe/")]
    [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
    [System.ComponentModel.ToolboxItem(false)]
    // To allow this Web Service to be called from script, using ASP.NET AJAX, uncomment the following line. 
    // [System.Web.Script.Services.ScriptService]
    public class EventoServices : System.Web.Services.WebService
    {
        private static RRTWSEntityDSD.ConvertirCadenaEnArregloServiceServiceReference.ConvertirCadenaEnArregloServiceSoapClient convertProxy = new RRTWSEntityDSD.ConvertirCadenaEnArregloServiceServiceReference.ConvertirCadenaEnArregloServiceSoapClient();
        private static EventoDAO eventoDAO = new EventoDAO();

    

        [WebMethod]
        public EventoDeportivo crearEvento(string feIni,
            string feFin,
            string descripcion,
            string idContenidoWeb,
            int limiteEnt,
            int estadio,
            double precio,
            string uuidContenido,
            int equipo01,
            int equipo02)
        {

            EventoDeportivo e = new EventoDeportivo();
            e = eventoDAO.crear( feIni,
             feFin,
             descripcion,
             idContenidoWeb,
             limiteEnt,
             estadio,
             precio,
             uuidContenido);

            eventoDAO.registrarEquiposAlEvento(e.idEvento,equipo01,equipo02);


            return e;
        }
        [WebMethod]
        public EventoDeportivo getEvento(int id)
        {
            if (id == 0)
            {
                throw new NullReferenceException("valor vacio");
            }
            EventoDeportivo e = eventoDAO.getEvento(id);
            if (e == null)
            {
                throw new NullReferenceException("No existe evento deportivo");
            }
            return e;
        }
        [WebMethod]
        public EventoDeportivo getEventoPorContenido(string idContenidoWeb)
        {
            return eventoDAO.getEvento(idContenidoWeb);
        }
      
        [WebMethod]
        public EventoDeportivo modificarEvento(int evento, string feIni,
            string feFin,
            string descripcion,
            string idContenidoWeb,
            int limiteEnt,
            int estadio,
            double precio,
            string uuidContenido,
            int equipo01,
            int equipo02)
        {
            EventoDeportivo e = new EventoDeportivo();
            e = eventoDAO.update(evento,feIni,
             feFin,
             descripcion,
             idContenidoWeb,
             limiteEnt,
             estadio,
             precio,
             uuidContenido);
            eventoDAO.modificarEquiposAlEvento(e.idEvento, equipo01, equipo02);
            return e;
        }

        [WebMethod]
        public int countEventosFiltrado(string codigoubigeo, string estadio, string fechaEventoIncio, string fechaEventoFin, string descripcion)
        {
            RRTWSEntityDSD.ConvertirCadenaEnArregloServiceServiceReference.ArrayOfInt array = new RRTWSEntityDSD.ConvertirCadenaEnArregloServiceServiceReference.ArrayOfInt();
            return eventoDAO.countEventosFiltrado(codigoubigeo, estadio, fechaEventoIncio, fechaEventoFin, descripcion);
        }
       
        [WebMethod]
        public List<EventoDeportivo> listarEventosFiltrado(int inicio, int fin, string codigoubigeo, string estadio, string fechaEventoIncio, string fechaEventoFin, string descripcion)
        {
            RRTWSEntityDSD.ConvertirCadenaEnArregloServiceServiceReference.ArrayOfInt array = new RRTWSEntityDSD.ConvertirCadenaEnArregloServiceServiceReference.ArrayOfInt();
            return eventoDAO.getListarEventosFiltrado(inicio, fin, codigoubigeo, estadio, fechaEventoIncio, fechaEventoFin, descripcion);
        }

        [WebMethod]
        public List<EventoDeportivo> getListarUltimosEventos(int limite) {
            return eventoDAO.getListarUltimosEventos(limite);
        }

    }
}
